package co.edu.uniquindio.gui;

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import co.edu.uniquindio.delegados.ParametrizadaDelegado;
/**
 * esta clase representa una ventana para un color y usa el patron de diseño Singleton para la creacion de esta
 * @author Andres Felipe Abril
 * @author Luis Enrique Robledo
 */
public class VentanaColor extends JFrame implements ActionListener
{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField campoNombre;
	private JTextField campoCodigo;
	private JTextField campoR;
	private JTextField campoG;
	private JTextField campoB;
	private JButton btnAceptar ;
    public static VentanaColor me;
    ParametrizadaDelegado param=ParametrizadaDelegado.getParametrizadaDelegado();
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					VentanaColor frame = new VentanaColor();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public VentanaColor() 
	{
		initGUI();		
	}
	/**
	 * este metodo em permite crear instancia unica de la clase VentanaColor 
	 * @return
	 */
	public static VentanaColor getVentanaColor()
    {
		if (me == null)
			me = new VentanaColor();
		return me;	
    }
	/**
	 * este metodo inicializa los componentes de la clase
	 */
	public  void initGUI()
	{
		setTitle("Agregar Color");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 448, 252);
		contentPane = new JPanel();
		contentPane.setBackground(Color.BLACK);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNombre = new JLabel("Nombre : ");
		lblNombre.setForeground(Color.WHITE);
		lblNombre.setBounds(33, 33, 68, 25);
		contentPane.add(lblNombre);
		
		JLabel lblR = new JLabel("R : ");
		lblR.setForeground(Color.WHITE);
		lblR.setBounds(33, 99, 60, 14);
		contentPane.add(lblR);
		
		JLabel lblG = new JLabel("G : ");
		lblG.setForeground(Color.WHITE);
		lblG.setBounds(33, 127, 60, 14);
		contentPane.add(lblG);
		
		JLabel lblB = new JLabel("B : ");
		lblB.setForeground(Color.WHITE);
		lblB.setBounds(34, 157, 60, 14);
		contentPane.add(lblB);
		
		JLabel lblCodigo = new JLabel("Codigo :");
		lblCodigo.setForeground(Color.WHITE);
		lblCodigo.setBounds(33, 61, 80, 25);
		contentPane.add(lblCodigo);
		
		campoNombre = new JTextField();
		campoNombre.setBounds(100, 32, 122, 26);
		contentPane.add(campoNombre);
		campoNombre.setColumns(10);
		
		campoCodigo = new JTextField();
		campoCodigo.setBounds(100, 62, 122, 26);
		contentPane.add(campoCodigo);
		campoCodigo.setColumns(10);
		
		campoR = new JTextField();
		campoR.setBounds(100, 91, 122, 26);
		contentPane.add(campoR);
		campoR.setColumns(10);
		
		campoG = new JTextField();
		campoG.setBounds(100, 120, 122, 26);
		contentPane.add(campoG);
		campoG.setColumns(10);
		
		campoB = new JTextField();
		campoB.setBounds(100, 149, 122, 26);
		contentPane.add(campoB);
		campoB.setColumns(10);
		
		btnAceptar = new JButton("Aceptar");
		btnAceptar.setBounds(100, 185, 100, 26);
		btnAceptar.addActionListener(this);
		contentPane.add(btnAceptar);
		
		JLabel lblPorFavorIngrese = new JLabel("Por favor ingrese los datos para agregar un color :");
		lblPorFavorIngrese.setForeground(Color.WHITE);
		lblPorFavorIngrese.setBounds(33, 6, 389, 25);
		contentPane.add(lblPorFavorIngrese);

	}
	/**
	 * este metodo me permite manejar y/o controlan los eventos que generan los componentes de la clase 
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()==btnAceptar)
		{
			
			if(campoR.getText().equals("") && campoR.getText().equals("")&&campoG.getText().equals(this)&&campoNombre.getText().equals("")&&campoCodigo.getText().equals(""))
			{ 
				String nombre =campoNombre.getText() ;
				int r=Integer.parseInt(campoR.getText());
				int g=Integer.parseInt(campoG.getText());
				int b=Integer.parseInt(campoR.getText());
				int codigo= Integer.parseInt(campoCodigo.getText());
				
                co.edu.uniquindio.logica.Color color = new co.edu.uniquindio.logica.Color(nombre, codigo, r, g, b)	;
                try {
					param.agregarColor(color);
					
                    campoNombre.setText("");
					campoCodigo.setText("");
					campoR.setText("");
					campoG.setText("");
					campoB.setText("");
				} catch (Exception e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
			else
				JOptionPane.showMessageDialog(this, "debe ingresar bien los datos", "!ERROR", JOptionPane.ERROR_MESSAGE);
		}
	}
}


